home *** CD-ROM | disk | FTP | other *** search
RISC OS BBC BASIC V Source | 1995-06-15 | 5.0 KB | 236 lines |
- >$.Wimp.Text
- **************************************
- * Text input within WIMP Windows *
- * By Adrian Philip Look *
- * 30th December 1987 *
- **************************************
- ("FX4,0"):
- $;" at line ";
- colour=8
- colour,0,0,255
- colour
- variables
- version=
- wimp_initialise
- flags=
- flags(
- %title_type=
- title_type(
- Qwimp%=
- create_window(50,50,500,500,512,512,flags,"Window 1",title_type,top,2)
- Quser%=
- create_window(50,50,500,500,512,512,flags,"Window 2",title_type,top,2)
- open_window(user%,
- open_window(wimp%,
- "Wimp_ForceRedraw",-1,0,0,1280,1024
- *POINTER
- "Wimp_Poll",mask,block%
- reason
- handle=!block%
- wimp_poll(reason,handle)
- variables
- block% &100
- title_foreground=1
- title_background=6
- work_area_foreground=1
- work_area_background=7
- scroll_bar_inner=1
- scroll_bar_outer=6
- input_colour=3
- top=-1
- mask=0
- amountx=32
- amounty=32
- text(1,70,70)
- wimp_poll(reason,handle)
- 6 *FX19
- reason
- 1 :
- redraw(!block%)
- 2 :
- open_window(handle,
- 3 :
- close_window(handle)
- 6 :
- mouse_click
- 8 :
- key_pressed
- 10 :
- scroll_acknowledge
- wimp_initialise
- version%
- "Wimp_Initialise",0
- version%
- =version%/100
- create_window(x0,y0,x1,y1,sizex,sizey,flags,title$,title_type,pos,buttons)
- block%!0=x0
- block%!4=y0
- block%!8=x1
- block%!12=y1
- block%!16=0
- block%!20=0
- block%!24=pos
- block%!28=flags
- block%?32=title_foreground
- block%?33=title_background
- U"block%?34=work_area_foreground
- V"block%?35=work_area_background
- block%?36=scroll_bar_outer
- block%?37=scroll_bar_inner
- block%?38=input_colour
- block%!40=0
- block%!44=-sizey
- block%!48=sizex
- block%!52=0
- block%!56=title_type
- block%!60=buttons*&1000
- $(block%+72)=
- title$,11)
- block%!84=0
- "Wimp_CreateWindow",0,block%
- handle%
- =handle%
- flags(tbar,move,vscb,hscb,boqb,scrl,wimp)
- flag%
- flag%=0
- tbar
- flag%=flag%
- move
- flag%=flag%
- vscb
- flag%=flag%
- hscb
- flag%=flag%
- wimp
- flag%=flag%
- boqb
- flag%=flag%
- scrl
- flag%=flag%
- &100
- =flag%
- title_type(hasb,text,txhc,txvc,back)
- flag%
- hasb
- flag%=flag%
- text
- flag%=flag%
- txhc
- flag%=flag%
- txvc
- flag%=flag%
- back
- flag%=flag%
- =flag%
- open_window(handle,new)
- new
- block%!0=handle
- "Wimp_GetWindowInfo",,block%
- block%!28=top
- "Wimp_OpenWindow",,block%
- close_window(handle)
- !block%=handle
- "Wimp_CloseWindow",,block%
- delete_window(handle)
- !block%=handle
- "Wimp_DeleteWindow",,block%
- scroll_acknowledge
- scx=block%!20
- scy=block%!24
- scx+=(block%!32)*amountx
- scy+=(block%!36)*amounty
- block%!20=scx
- block%!24=scy
- "Wimp_OpenWindow",,block%
- mouse_click
- pointer_info
- set_caret(handle,cx,cy)
- key_pressed
- char=block%!24
- "Wimp_GetCaretPosition",,block%
- handle=!block%
- cx=block%!8
- cy=block%!12
- handle
- wimp% : window=0
- user% : window=1
- 24,x0;y0;x1;y1;
- char>31
- char<127
- "text(window,cx,-cy)=char:cx+=1
- )x=(cx-1)*16+x0-scx:y=(cy+1)*32+y1-scy
- x,y-4:
- 32,8,char
- char=13
- cx=(x0
- 16):cy-=1
- char=127
- cx-=1:text(window,cx,-cy)=0
- )x=(cx-1)*16+x0-scx:y=(cy+1)*32+y1-scy
- x,y-4:
- cx>31
- cx=0:cy-=1
- cy<-16
- cy=-16
- cx=cx*16:cy=cy*32
- set_caret(handle,cx,cy)
- set_caret(handle,cx,cy)
- "Wimp_SetCaretPosition",handle,-1,cx,cy,&10000020
- pointer_info
- "Wimp_GetPointerInfo",0,block%
- mx=!block%
- my=block%!4
- handle=block%!12
- block%!0=handle
- "Wimp_GetWindowState",0,block%
- cx=mx-x0+scx:cx=(cx
- 16)*16
- $cy=-y1+my+scy:cy=(cy
- 32)*32-32
- redraw(handle)
- !block%=handle
- "Wimp_RedrawWindow",,block%
- more
- which_window
- which_window
- handle
- wimp% :window=0:
- show_text
- user% :window=1:
- show_text
- show_text
- more
- !cx0=gx0-x0+scx:cx0=(cx0
- #cy0=gy0-y1+scy:cy0=(cy0
- 32)-1
- #cx1=gx1-x0+scx:cx1=(cx1
- 16)+1
- 3cy1=gy1-y1+scy:cy1=(cy1
- 32)+1:
- cy1=1
- cy1=0
- cy=cy0
- cx=cx0
- /char=text(window,cx,-cy):
- char=0
- char=32
- )x=(cx-1)*16+x0-scx:y=(cy+1)*32+y1-scy
- x,y-4:
- char
- cx,cy
- "Wimp_GetRectangle",,block%
- more
- x0=block%!4
- y0=block%!8
- x1=block%!12
- y1=block%!16
- scx=block%!20
- scy=block%!24
- gx0=block%!28
- gy0=block%!32
- gx1=block%!36
- gy1=block%!40
- ;bx=gx0-scx :
- all drawing should be relative to bx,by
- by=gy1-scy
-